home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / examples / reaction / int3.d < prev   
Text File  |  2002-10-28  |  7KB  |  167 lines

  1. // Simple example of integer buttons V0.1 © by DMX 2001
  2. OPT OPTIMIZE=3,LINK='amiga.lib'
  3.  
  4. MODULE 'exec','exec/memory','dos/dos','dos/dosextens','exec/lists',
  5.        'exec/nodes','intuition','graphics','intuition/intuition',
  6.        'intuition/gadgetclass','intuition/imageclass',
  7.        'intuition/intuitionbase','intuition/classusr',
  8.        'intuition/gadgetclass','intuition/cghooks','intuition/icclass',
  9.        'intuition/classes','intuition/sghooks','graphics/gfxbase',
  10.        'graphics/text','graphics/gfxmacros','utility/tagitem','utility/hooks'
  11.  
  12. MODULE 'window','classes/window','layout','integer','label','button','bevel',
  13.        'gadgets/layout', 'reaction/reaction', 'reaction/reaction_macros','reaction/reaction_class'
  14.  
  15. DEF LayoutBase:PTR TO ClassLibrary
  16. DEF WindowBase:PTR TO ClassLibrary
  17. DEF IntegerBase:PTR TO ClassLibrary
  18. DEF ButtonBase:PTR TO ClassLibrary
  19. DEF LabelBase:PTR TO ClassLibrary
  20. DEF BevelBase:PTR TO ClassLibrary
  21.  
  22. ENUM GID_MAIN=0, GID_LAYER1, GID_INTEGER1, GID_INTEGER2, GID_DOWN, GID_UP, GID_QUIT, GID_LAST
  23. ENUM WID_MAIN=0, WID_LAST
  24. ENUM OID_MAIN=0, OID_LAST
  25. //ULONG DoMethod( Object *obj, ULONG methodID, ... ); // c style
  26. LPROC DoMethod(obj:PTR TO _Object,methodid:LONG,message=NIL:LIST OF LONG)(ULONG)
  27.  
  28. PROC main()(INT)
  29.   DEF AppPort:PTR TO MsgPort
  30.   DEF windows[WID_LAST]:PTR TO Window
  31.   DEF gadgets[GID_LAST]:PTR TO Gadget
  32.   DEF objects[OID_LAST]:PTR TO Object
  33.   OpenAll()
  34.   IF (AppPort := CreateMsgPort())
  35. //    PrintF('AppPort = 0x\z\h[8]\n', AppPort) // Debug
  36.     objects[OID_MAIN]:=WindowObject,
  37.       WA_ScreenTitle, 'Reaction Example V0.1 by DMX © 2001',
  38.       WA_Title, 'Reaction Integer Example',
  39.       WA_Activate, TRUE,
  40.       WA_DepthGadget, TRUE,
  41.       WA_DragBar, TRUE,
  42.       WA_CloseGadget, TRUE,
  43.       WA_SizeGadget, TRUE,
  44.       WA_RMBTrap, TRUE,
  45.       WA_AutoAdjust, TRUE,
  46.       WA_IDCMP, IDCMP_GADGETDOWN | IDCMP_GADGETUP | IDCMP_GADGETHELP | IDCMP_MENUPICK | IDCMP_MENUHELP | IDCMP_CLOSEWINDOW | IDCMP_ACTIVEWINDOW | IDCMP_INACTIVEWINDOW | IDCMP_RAWKEY | IDCMP_VANILLAKEY | IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE | IDCMP_NEWSIZE | IDCMP_CHANGEWINDOW | IDCMP_SIZEVERIFY | IDCMP_REFRESHWINDOW | IDCMP_INTUITICKS,
  47.       WINDOW_GadgetHelp, TRUE,
  48.       WINDOW_IconifyGadget, TRUE,
  49.       WINDOW_IconTitle, 'Integer',
  50.       WINDOW_AppPort, AppPort,
  51.       WINDOW_Position, WPOS_CENTERSCREEN,
  52.       WINDOW_ParentGroup, gadgets[GID_MAIN] := VGroupObject,
  53.         LAYOUT_SpaceOuter, TRUE,
  54.         LAYOUT_DeferLayout, TRUE,
  55.  
  56.         LAYOUT_AddChild, gadgets[GID_LAYER1] := LayoutObject,
  57.         GA_ID, GID_LAYER1,
  58.         GA_RelVerify, TRUE,
  59.         GA_GadgetHelp, TRUE,
  60.         LAYOUT_Label, 'IntegerX',
  61.         LAYOUT_Orientation, 1,
  62.         LAYOUT_LeftSpacing, 1,
  63.         LAYOUT_TopSpacing, 1,
  64.         LAYOUT_BottomSpacing, 1,
  65.         LAYOUT_RightSpacing, 1,
  66.         LAYOUT_HorizAlignment, LALIGN_LEFT,
  67.         LAYOUT_VertAlignment, LALIGN_TOP,
  68.         LAYOUT_LabelPlace, BVJ_TOP_CENTER,
  69.         LAYOUT_BevelState, IDS_NORMAL,
  70.         LAYOUT_BevelStyle, 2,
  71.         LAYOUT_ShrinkWrap, TRUE,
  72.  
  73.           LAYOUT_AddChild, gadgets[GID_INTEGER1] := IntegerObject,
  74.             GA_ID, GID_INTEGER1,
  75.             GA_RelVerify, TRUE,
  76.             GA_GadgetHelp, TRUE,
  77.             GA_TabCycle, TRUE,
  78.             INTEGER_Number, 0,
  79.             INTEGER_MaxChars, 10,
  80.             INTEGER_Minimum, -32,
  81.             INTEGER_Maximum, 32,
  82.             INTEGER_Arrows, TRUE,
  83.           IntegerEnd,
  84.  
  85.           LAYOUT_AddChild, gadgets[GID_INTEGER2] := IntegerObject,
  86.             GA_ID, GID_INTEGER2,
  87.             GA_RelVerify, TRUE,
  88.             GA_GadgetHelp, TRUE,
  89.             GA_TabCycle, TRUE,
  90.             INTEGER_Number, 0,
  91.             INTEGER_MaxChars, 10,
  92.             INTEGER_Minimum, -100,
  93.             INTEGER_Maximum, 100,
  94.             INTEGER_Arrows, FALSE,
  95.           IntegerEnd,
  96.         LayoutEnd,
  97.       EndGroup,
  98.     EndWindow
  99.     IF (objects[OID_MAIN])
  100.       IF (windows[WID_MAIN]:=RA_OpenWindow(objects[OID_MAIN]))
  101.         DEFUL wait,signal,app=(1 << AppPort.SigBit),done=0,result
  102.         DEFUW code
  103.         GetAttr(WINDOW_SigMask, objects[OID_MAIN], &signal)
  104.         ActivateLayoutGadget( gadgets[GID_MAIN], windows[WID_MAIN], NIL, gadgets[GID_INTEGER1])
  105.         WHILEN done
  106.           wait := Wait(signal | SIGBREAKF_CTRL_C | app)
  107.           IF (wait & SIGBREAKF_CTRL_C)
  108.             done := TRUE
  109.           ELSE
  110.             WHILEN (result := RA_HandleInput(objects[OID_MAIN], &code)) = WMHI_LASTMSG
  111.               SELECT (result & WMHI_CLASSMASK)
  112.                 CASE WMHI_CLOSEWINDOW
  113.                   windows[WID_MAIN] := NIL
  114.                   done := TRUE
  115.                 CASE WMHI_GADGETUP
  116.                   SELECT (result & WMHI_GADGETMASK)
  117.                     CASE GID_QUIT
  118.                       done := TRUE
  119.                   ENDSELECT
  120.                 CASE WMHI_ICONIFY
  121.                   RA_Iconify(objects[OID_MAIN])
  122.                   windows[WID_MAIN] := NIL
  123.                 CASE WMHI_UNICONIFY
  124.                   windows[WID_MAIN] := RA_OpenWindow(objects[OID_MAIN])
  125.                   IF (windows[WID_MAIN])
  126.                     GetAttr(WINDOW_SigMask, objects[OID_MAIN], &signal)
  127.                   ELSE
  128.                     done := TRUE
  129.                   ENDIF
  130.               ENDSELECT
  131.             ENDWHILE
  132.           ENDIF
  133.         ENDWHILE
  134.       ELSE
  135.         PrintF('Can''t RA_OpenWindow()\n') // Debug
  136.       ENDIF
  137.       DisposeObject(objects[OID_MAIN])
  138.     ELSE
  139.       PrintF('Can''t find objects[]\n') // Debug
  140. //      PrintF('Objects[] = 0x\z\h[8]\n', objects) // Debug
  141.     ENDIF
  142.     DeleteMsgPort(AppPort)
  143.   ELSE
  144.     PrintF('Can''t create MsgPort\n') // Debug
  145.   ENDIF
  146.   CloseAll(0)
  147. ENDPROC
  148.  
  149. PROC OpenAll()
  150.   IFN (WindowBase := OpenLibrary('window.class', 44)); PrintF('Can''t open window.class\n'); CloseAll(10); ENDIF
  151.   IFN (BevelBase := OpenLibrary('images/bevel.image', 44)); PrintF('Can''t open bevel.image\n'); CloseAll(11); ENDIF
  152.   IFN (LayoutBase := OpenLibrary('layout.gadget', 44)); PrintF('Can''t open layout.gadget\n'); CloseAll(12); ENDIF
  153.   IFN (IntegerBase := OpenLibrary('gadgets/integer.gadget', 44)); PrintF('Can''t open integer.gadget\n'); CloseAll(13); ENDIF
  154.   IFN (ButtonBase := OpenLibrary('gadgets/button.gadget', 44)); PrintF('Can''t open button.gadget\n'); CloseAll(15); ENDIF
  155.   IFN (LabelBase := OpenLibrary('images/label.image', 44)); PrintF('Can''t open label.image\n'); CloseAll(16); ENDIF
  156. ENDPROC
  157.  
  158. PROC CloseAll(number:INT)
  159.   IF WindowBase; CloseLibrary(WindowBase); ENDIF
  160.   IF BevelBase; CloseLibrary(BevelBase); ENDIF
  161.   IF LayoutBase; CloseLibrary(LayoutBase); ENDIF
  162.   IF IntegerBase; CloseLibrary(IntegerBase); ENDIF
  163.   IF ButtonBase; CloseLibrary(ButtonBase); ENDIF
  164.   IF LabelBase; CloseLibrary(LabelBase); ENDIF
  165.   Exit(number)
  166. ENDPROC
  167.